package global

import (
	"go.uber.org/zap"
	"prj-layout/internal/repository/cache"
	"prj-layout/internal/repository/dao"
	"prj-layout/pkg/validate"
)


//
// InitApplication 初始化应用程序
//
func InitApplication() {

	var err error

	// 由于 viper 是读取配置文件的库, 其他所有的初始化都是基于配置文件中的参数
	// 必须先初始化 viper
	//err = configs.InitApplicationConfig()
	//if err != nil {
	//	fmt.Println("初始化 viper 失败:", err)
	//}

	// 初始化自定义 logger 对象
	//zaplogger.InitZapLogger()

	// 初始化 Validator 参数验证库的翻译器
	err = validate.InitTranslator("zh")
	if err != nil {
		zap.S().Errorf("初始化 Validator 库翻译器失败: %s\n", err)
	}

	// 使用全局变量保存数据库连接对象
	err = dao.New()
	if err != nil {
		zap.S().Errorf("初始化 MySQL 数据库失败: %s\n", err)
	}

	// 使用全局对象保存 redis 客户端对象
	err = cache.New()
	if err != nil {
		zap.S().Errorf("初始化 Reis 失败: %s\n", err)
	}

}
